#include <stdio.h>
#include <stdlib.h>
#include "Liste.h"


void initialise(Liste *l){
	l->prem=NULL;
	l->last=NULL;
}

int estVide(const Liste * l){
	/*int i;
	for(i=0;i<= l->last;i++){*/
	if((l->prem==NULL)&&(l->last==NULL))
		return 1;
	else
		return 0;
}
unsigned int nbElements(const Liste * l){
	int i=0;
	Cellule *c=l->prem; /*je récupere le premier elm de la liste */
	while((c!=NULL)){
		i++; /* pour le nombre d'elements */
		c=c->suivant; /* récuperer la cellule suivantes*/  
	}
	return i;	
}

void affichageListeGaucheDroite(const Liste * l){
	Cellule  *c=l->prem;
	while((c != NULL)){
		afficheElement(c->info);
		c=c->suivant;
	}
}

void affichageListeDroiteGauche(const Liste * l){
	Cellule  *c=l->last;
	while((c != NULL)){
		afficheElement(c->info);
		c= c->precedent;
	}
}

void ajoutEnTete(Elem e,Liste * l){
	Cellule *tmp;
	
	tmp=(Cellule*)malloc(sizeof(Cellule));
	tmp->suivant=l->prem;
	
	if(estVide(l))
		l->last=tmp;
	else
		(l->prem)->suivant=tmp;
	
	tmp->precedent=NULL;
	tmp->info=e;
	l->prem=tmp;
}

void ajoutEnQueue(Elem e, Liste * l){
	if(estVide(l))
		ajoutEnTete(e,l);
	else{
		Cellule *tmp;
		tmp=(Cellule*)malloc(sizeof(Cellule));
		tmp->precedent=l->last;
		tmp->suivant=NULL;
		tmp->info=e;
		(l->last)->suivant=tmp;
		l->last=tmp;
	}
}

void suppressionEnTete(Liste * l){
	/*Cellule * tmp;*/
	if(l->prem != NULL){ /** test si la premiere liste est vide*/
		Cellule * tmp=l->prem;
		l->prem=tmp->suivant;
		tmp->precedent=NULL;
		free(tmp);
	}
	if(estVide(l))
		l->last=NULL;

	
}

void videListe(Liste * l){
	while(l->prem != NULL){
		suppressionEnTete(l);
	}
}

void testament(Liste * l){
	videListe(l);
}

void affectation(Liste * l1, const Liste * l2){
}

int rechercheElement(Elem e, const Liste *l){
}

void insererElement(Elem e, Liste * l, unsigned int position){
}

void inverse_liste( Liste * l){
  Cellule *pred=(l->pred)->suivant;
  Cellule *p=pred->suivant;
  Cellule *suiv;
  pred_>suivant=l->prem;
  suiv=p->suivant;
  
  while(p!=NUL)
  {
    if(p->suivant==NULL)
      l->prem=p;
    p->suivant=pred;
    pred=p;
    p=suiv;
    suiv=suiv->suivant;
}






